package com.buddy.sds.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.buddy.sds.auth.entity.PermissionTree;
import com.buddy.sds.auth.entity.SystemPermission;

import java.util.List;
import java.util.Set;

public interface ISystemPermissionService extends IService<SystemPermission> {


    /**
     * 获取所有不需要授权的url
     * @return
     */
    List<String> getIgnoreUrlList();;

    /**
     * 根据角色获取权限列表
     * @param role_id
     * @return
     */
    List<SystemPermission> getPermissionListByRole(String role_id);

    /**
     * 获取权限树(功能树)
     * @param user_id
     * @param includeAction 是否包含按钮级别
     * @return
     */
    List<PermissionTree> getPermissionTreeByUser(String user_id, boolean includeAction);

    /**
     * 获取权限树
     * @param includeAction
     * @return
     */
    List<PermissionTree> getPermissionTree( boolean includeAction);
    /**
     *
     * 根据某角色权限树
     * @param role_id
     * @return
     */
    List<PermissionTree> getPermissionTreeByRole(String role_id);

    /**
     * 获取用户权限key列表
     * @param user_id
     * @return
     */
    Set<String> getPermissionKeyList(String user_id);

    /**
     * 更新角色权限信息
     * @param role_id 角色id
     * @param permissions 权限id集合
     * @param canPlusPermission
     */
    void updatePermission(String role_id, List<String> permissions, boolean canPlusPermission);

    /**
     * 级联删除
     * @param pid
     */
    void deleteCascade(String pid);

    /**
     * 切换菜单的显隐状态
     * @param pid
     * @return
     */
    boolean toggleVisible(String pid);

    /**
     * 切换菜单和api 是否需要授权
     * @param pid
     * @return
     */
    boolean toggleAuth(String pid);

    /**
     * 去掉目前的首页
     */
    void removeHomePage();

    /**
     * 获取主页path
     * @return
     */
    String getHomePagePath();
}
